The present disclosure relates to installing software on a computer platform. A computer platform is a computer including a particular operating system (OS) for that computer (e.g., WINDOWS® OS, MAC® OS, SYMBIAN OS®, or LINUX® OS). Software developers often create source code that can be appropriately compiled for respective computer platforms, and then independently generate native installation packages for each target platform. Each native installation package is associated with a specific computer platform, and these native installation packages can then be distributed for installation on appropriate machines. For a particular target platform, the appropriate native installation package is obtained from the software developer, and an OS installer can be used to process the native installation package in order to install the application. For example, INSTALLSHIELD® software can be used to produce an .msi file for installation on WINDOWS® machines, and a different software tool can be used to produce .pkg files for installation on MAC® machines.
In order to facilitate this process of generating native installation packages for distribution, some software developers have used a common specification of the installer package for different platforms. This common specification can then be used to create each respective platform-specific installation package, where the common specification indicates information such as which source files and which compiler to use for different target platforms. In any event, the distributor of the desktop application distributes different installation packages for different target platforms, and the customer generally must ensure, when acquiring a software application, that they are purchasing the correct installation package for their system.
Other software developers have created cross-platform installation packages, such as the JAVA® Archive (JAR) file format, that get deployed to the end-user system. The cross-platform package can then be expanded (e.g., decrypted and uncompressed) and written directly to disk using code provided by the software developer and/or the developer of the cross-platform package format. Typically, such cross-platform software relies on a virtual machine, such as the JAVA® Virtual Machine (JVM) (available from Sun Microsystems, Inc.), to run on the target platform.
The JVM provides a runtime environment and Java interpreter for most operating systems, including WINDOWS® OS, MAC® OS, AND LINUX® OS. Java source code files (files with a .java extension) are compiled into a format called bytecode (files with a .class extension), which can then be executed by a Java interpreter. Bytecode can be converted directly into machine language instructions by a just-in-time compiler (JIT).
Flash® Player (available from Adobe Systems Incorporated) is another virtual machine, which is used to run, or parse, Flash® files including ActionScript or SWF (SWF is a file format, such as the SWF File Format Specification (Version 10) as published, at http://www.adobe.com/devnet/swf/pdf/swf_file_format_spec_v10.pdf, by Adobe Systems Incorporated of San Jose, Calif.; the SWF file format delivers vector graphics, text, video, and sound over the Internet and is supported by Adobe® Flash® Player and Adobe AIR™ software.) The Flash® Player and Flash® Authoring software allow development of projectors (self-running SWF movies) that run on a specific target platform, by embedding the SWF data in the Flash® Player executable to create a new .exe file, and manipulating a byte pattern in the .exe file to indicate the presence of the SWF data. Such projectors can then be distributed for use on the target platform. Another runtime environment includes the ADOBE® AIR™ software, available from Adobe Systems Incorporated of San Jose, Calif., which provides cross-platform installation packages (.air files) that can be converted into native installation packages for a particular platform as needed.
In addition, some install file formats support digital signatures. Typical file formats for distribution of signed code include WINDOWS® executables employing AUTHENTICODE® software, WINDOWS® installer files (MSI), .air files, and JAR files. In each of these formats, a valid installation file may be either signed or unsigned. Thus, a software developer can create the file and then hand it off to the signer for a separate digital signing step, but both the unsigned version and the signed version of the file can be used in the installation process. Moreover, many platforms support (e.g., WINDOWS® OS, MAC® OS) and some platforms require (e.g., SYMBIAN OS®) that installed software be digitally signed using a platform-specific signing mechanism.